package service

import (
	"bytes"
	"encoding/json"
	"fmt"
	"harbor/src/configs"
	"harbor/src/models"
	"io/ioutil"
)
func GetProject(harbor_url string,) []models.Proj {
	//获取所有project  api:https://10.111.80.2/api/projects
	resp, _ := configs.HttpInit().Get("https://"+harbor_url+"/api/projects")
	body, _ := ioutil.ReadAll(resp.Body)
	defer resp.Body.Close()
	//所有项目
	var harbor_proj_arr []models.Proj
	json.Unmarshal(body, &harbor_proj_arr)
	//根据项目获得所有的镜像
	return harbor_proj_arr
}

type proj models.Proj
//project的方法，根据传入的project,在新的harbor中创建项目,user为新Harbor的用户名和密码
func CreateProject(user models.User,newharbor_api string,proj models.Proj){

	var project_creat models.PostProj
	project_creat = models.PostProj{
		Name:proj.Name,
		Metadata: proj.Metadata,
	}
	byteData,err:=json.Marshal(project_creat)
	if err!=nil{
		panic(err)
	}
	reader:=bytes.NewReader(byteData)
	client := configs.HttpInit()
	req, err := client.Post("https://"+user.UserName+":"+user.Password+"@"+newharbor_api+"/api/projects",
		"application/json",reader)
	if err!=nil{
		panic(err)
	}
	defer req.Body.Close()
	_,err=ioutil.ReadAll(req.Body)
	if err!=nil{
		panic(err)
	}
	fmt.Printf("project:%s创建成功\n", project_creat.Name)
}
//判断新的harbor中项目是否与老harbor相同，不同则添加,执行CreateProject
func ContrastProj (newproj []models.Proj,oldproj []models.Proj,user models.User,newharbor_api string ){
	for _,old_proj:=range oldproj{
		for _,new_proj:=range newproj{
			if new_proj.Name==old_proj.Name {
				continue
			}
			CreateProject(user,newharbor_api,old_proj)
		}
	}
}